Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

676
Vistas
¿Cómo resuelvo el error: "No se deben citar los nombres de los argumentos" en Terraform?

Estoy ejecutando Terraform 0.12.24 localmente

Estoy tratando de implementar una integración de API Gateway con Lambda

Estoy intentando habilitar AWS API GW CORS con Terraform.

Tengo el siguiente recurso para la respuesta del método OPTIONS:

 resource "aws_api_gateway_method_response" "options_200" { rest_api_id = aws_api_gateway_rest_api.scout-approve-api-gateway.id resource_id = aws_api_gateway_resource.proxy.id http_method = aws_api_gateway_method.options_method.http_method status_code = "200" response_models { "application/json" = "Empty" } response_parameters { "method.response.header.Access-Control-Allow-Headers" = true, "method.response.header.Access-Control-Allow-Methods" = true, "method.response.header.Access-Control-Allow-Origin" = true } depends_on = [aws_api_gateway_method.options_method] }

Y estoy obteniendo:

 Error: Invalid argument name on main.tf line 48, in resource "aws_api_gateway_method_response" "options_200": 48: "application/json" = "Empty" Argument names must not be quoted.

¿Lo que da?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Este es en realidad el malentendido del analizador donde está el error. En realidad, se queja de que está tratando de leer los modelos de response_models y los parámetros de response_parameters como bloques en lugar de atributos. Hay más discusión sobre esto en la documentación 0.12 .

La principal diferencia entre un atributo de mapa y un bloque anidado es que un atributo de mapa generalmente tendrá claves definidas por el usuario, como vemos en el ejemplo de etiquetas anterior, mientras que un bloque anidado siempre tiene un conjunto fijo de argumentos admitidos definidos por el tipo de recurso. esquema, que Terraform validará.

En la versión 0.11, podría usar indistintamente la sintaxis de bloque (solo llaves como response_parameters { ... } ) para los atributos, pero en la versión 0.12 es más estricta con respecto a los tipos, por lo que ya no es posible. El código en la publicación de Medium a la que se vinculó como ejemplo de trabajo es un código 0.11 y no es válido en 0.12. Si observa detenidamente el código de GitHub que también vinculó , puede ver que usa la sintaxis de atributo en lugar de la sintaxis de bloque, por lo que es válido.

Cambiar a usar la sintaxis de atributo agregando un = hará que esto funcione como se esperaba:

 resource "aws_api_gateway_method_response" "options_200" { rest_api_id = aws_api_gateway_rest_api.scout-approve-api-gateway.id resource_id = aws_api_gateway_resource.proxy.id http_method = aws_api_gateway_method.options_method.http_method status_code = "200" response_models = { "application/json" = "Empty" } response_parameters = { "method.response.header.Access-Control-Allow-Headers" = true, "method.response.header.Access-Control-Allow-Methods" = true, "method.response.header.Access-Control-Allow-Origin" = true } depends_on = [aws_api_gateway_method.options_method] }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda